<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>3-类中方法的this指向</title>
  </head>
  <body>
    <script>
      class Person {
        constructor(name, age) {
          this.name = name;
          this.age = age;
        }
        // !!! 类中定义的方法 已经在局部开启了 严格模式
        say() {
          // say 方法放在哪里? -->  类的原型对象上  供实例使用
          // 通过Person实例调用say时，say中的 this 就是 Person 实例
          console.log('this', this);
        }
      }

      const p = new Person('哈哈', 24);
      // console.log(p);
      p.say(); //通过实例调用 say 方法

      const x = p.say; // 函数赋值给x  x === say(){}  --> 等于函数(方法)
      x(); //undefined???    x() 就是在执行 say(){}  这个函数 --> 直接调用

      // function demo() {
      //   'use strict'; //undefined
      //   console.log('demo', this); //window
      // }
      // demo(); //直接调用
    </script>
  </body>
</html>
